package cn.tedu.csmall.stock.webapi.quartz;

import cn.tedu.csmall.commons.pojo.stock.model.Stock;
import cn.tedu.csmall.stock.webapi.quartz.config.RabbitMQConfig;
import cn.tedu.csmall.stock.webapi.utils.RedisBloomUtils;
import org.apache.commons.lang.math.RandomUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

public class QuartzJob implements Job {

    // 向RabbitMQ发送消息
    // 也是从Spring容器中获取SpringBoot启动时为我们创建好的对象
    @Autowired
    private RabbitTemplate rabbitTemplate;

    // 装配支持操作布隆过滤器的redis对象
    @Autowired
    private RedisBloomUtils redisBloomUtils;


    static int i=1;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 实现一个简单的任务用作演示
        // 例如输出当前系统时间
        System.out.println("-------------------"+ LocalDateTime.now() +"---------------------");

        // 声明要保存到布隆过滤器中的元素数组
        String[] colors={"red","origin","yellow","green","blue","pink","white"};
        // 定义布隆过滤器的Key
        final String COLOR_BLOOM="color_bloom";
        // 执行将数组元素保存到布隆过滤器中的操作
        redisBloomUtils.bfmadd(COLOR_BLOOM,colors);
        // 下面声明一个欲判断是否在布隆过滤器中的元素
        String el="black";
        // 判断el是否在布隆过滤器中
        System.out.println(el+"是否在布隆过滤器中:"+
                redisBloomUtils.bfexists(COLOR_BLOOM,el));


        /*
        // 实例化一个Stock对象
        Stock stock=new Stock();
        stock.setId(i++);
        stock.setCommodityCode("PC100");
        stock.setReduceCount(RandomUtils.nextInt(100));
        // 利用RabbitMQTemplate发送消息
        // convertAndSend([交换机名称],[路由Key名称],[要发送的消息])
        rabbitTemplate.convertAndSend(
                RabbitMQConfig.STOCK_EX,
                RabbitMQConfig.STOCK_ROUT,
                stock);
        System.out.println("发送消息完成:"+stock);
        */
    }
}
